From 252d27963b7d4ace036167beab940080696ef4f5 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 30 Nov 2006 12:39:35 +0000 Subject: [PATCH] [XEN] kexec: use parse_size_and_unit() when parsing crashkernel command line parameter. Signed-off-by: Ian Campbell --- xen/common/kexec.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 20b338f834..ae3f0e6c70 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -138,32 +138,21 @@ __initcall(register_crashdump_trigger); void machine_kexec_reserved(xen_kexec_reserve_t *reservation) { - unsigned long val[2]; + unsigned long start, size; char *str = opt_crashkernel; - int k = 0; memset(reservation, 0, sizeof(*reservation)); - while (k < ARRAY_SIZE(val)) { - if (*str == '\0') { - break; - } - val[k] = simple_strtoul(str, &str, 0); - switch (toupper(*str)) { - case 'G': val[k] <<= 10; - case 'M': val[k] <<= 10; - case 'K': val[k] <<= 10; - str++; - } - if (*str == '@') { - str++; - } - k++; - } + size = parse_size_and_unit(str, &str); + if ( *str == '@' ) + start = parse_size_and_unit(str+1, NULL); + else + start = 0; - if (k == ARRAY_SIZE(val)) { - reservation->size = val[0]; - reservation->start = val[1]; + if ( start && size ) + { + reservation->start = start; + reservation->size = size; } } -- 2.30.2